﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BusinessLogic.AuthServiceReference;

namespace BusinessLogic.ServicesClients
{
    public class AuthClient
    {

        public readonly AuthentificateServiceClient Client = null;

        public AuthClient()
        {
            try
            {
                this.Client = new AuthentificateServiceClient("AuthentificateServiceEndPoint");
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("Ошибка при подключении к сервису.", ex);
            }
        }


        /// <summary>
        /// Возвращает полную информацию о пользователе и его правах доступа
        /// </summary>
        /// <param name="DomainLoginName"></param>
        /// <returns></returns>
        public UserSecurityDetails GetUserSecurityDetails(string DomainLoginName)
        {
            return Client.GetUserSecurityDetails(DomainLoginName);
        }


        /// <summary>
        /// Проводит аутентификацию пользователя
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="hashPassword"></param>
        /// <returns>1-ok, 2-заблокирован, 0 - не верный логин/пароль</returns>
        public int AuthenticateUser(string userName, string hashPassword)
        {
            return Client.AuthenticateUser(userName, hashPassword);
        }


        /// <summary>
        /// Возвращается список доступных действий по названию права доступа
        /// </summary>
        /// <param name="permissionName"></param>
        /// <returns></returns>
        public List<MVCAction> MVCActionsByPermissionName(string permissionName)
        {
            var actions = Client.MVCActionsByPermissionName(permissionName);
            if (actions != null || actions.Count() > 0)
                return actions.ToList();
            else
                return null;
        }


        /// <summary>
        /// Возвращается список доступных действий по названию права доступа
        /// </summary>
        /// <param name="permissionId"></param>
        /// <returns></returns>
        public List<MVCAction> MVCActionsByPermissionId(int permissionId)
        {
            var actions = Client.MVCActionsByPermissionId(permissionId);
            if (actions != null || actions.Count() > 0)
                return actions.ToList();
            else
                return null;
        }

    }
}